#include "delay.h"
#include "stm32f10x.h"                  // Device header
#include <stdio.h>

static u8 fac_us=0;
static u16 fac_ms=0;
void dDelay_Init(void)
{
	SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
	fac_us=9;//9个机器周期是ius
	fac_ms=fac_us*1000;
}
void delay_us(u32 nus)
{
  u32 tmp;
	SysTick->LOAD=nus*fac_us;
	SysTick->VAL=0x00; //清空当前寄存器
  SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;//使能寄存器  |=相当于赋值
	
	do{
	tmp=SysTick->CTRL;
	
	}while((tmp==0x01)&&!(tmp&(1<<16)));
	
	SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;//失能寄存器  &=相当于插入
	SysTick->VAL=0x00; //清空当前寄存器
}
void delay_ms(u32 nus)
{
  u32 tmp;
	SysTick->LOAD=nus*fac_ms;
	SysTick->VAL=0x00; //清空当前寄存器
  SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;//使能寄存器  |=相当于赋值
	
	do{
	tmp=SysTick->CTRL;
	
	}while((tmp==0x01)&&!(tmp&(1<<16)));
	
	SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;//失能寄存器  &=相当于插入
	SysTick->VAL=0x00; //清空当前寄存器
}
